perm filename BEJCZY[AL,HE] blob
sn#317724 filedate 1977-11-25 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00011 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00003 00002 BEJCZY - BEJCZY SIMPLIFIED DETERMINATION OF D MATRIX
C00005 00003 LINK INERTIAL VALUES FOR THE BLUE ARM
C00007 00004 PARAMETERS IN SIMPLIFIED STATE EQUATIONS FOR INERTIA AND GRAVITY LOADS.
C00010 00005 STORAGE AREA FOR BEJCZY COEFFICIENTS
C00012 00006 HNDWT & NOWT: MODIFY BEJCZY PARAMETERS FOR A GIVEN LOAD IN THE HAND.
C00014 00007 COMMON CODE FOR NOWT AND HNDWT
C00016 00008 DTERMS: COMPUTES THE D(II) AND D(I) COEFFICIENTS OF THE STATE EQUATIONS.
C00019 00009 "DTERMS" EXECUTABLE CODE
C00022 00010 [CONTINUATION OF DTERMS]
C00025 00011 [CONTINUATION OF DTERMS]
C00026 ENDMK
C⊗;
;BEJCZY - BEJCZY SIMPLIFIED DETERMINATION OF D MATRIX
TITLE BEJCZY
;THIS FILE CONTAINS THREE SAIL CALLABLE ROUTINES: HNDWT, NOWT, AND DTERMS.
;THEY CAN BE USED TO DETERMINE THE DIAGONAL TERMS OF THE ACCELERATION
;COEFFICIENTS MATRIX AS WELL AS THE GRAVITY MATRIX FOR THE STATE EQUATIONS
;DEFINING THE ARM DYNAMICS. THE IMPLEMENTED EQUATIONS WERE DERIVED IN
;"ROBOT ARM DYNAMICS AND CONTROL, JPL MEMORANDUM 33-669", BY A.K. BEJCZY.
;
;THE PURPOSE OF THE THREE ROUTINES AND THEIR REQUIRED ARGUMENTS ARE EXPLAINED
;IN THE FOLLOWING PAGES.
INTERNAL HNDWT,DTERMS,NOWT,G
EXTERNAL SNCOSD,SQRT
;DEFINITIONS
↓P ← 17 ;PUSH STACK POINTER
↓YELARM←← 1 ;MECHANISM BITS: YELLOW ARM, NOT INCLUDING HAND
↓YELHND←← 2 ;YELLOW HAND
↓BLUARM←← 4 ;BLUE ARM, NOT INCLUDING HAND
↓BLUHND←← 10 ;BLUE HAND
;LINK INERTIAL VALUES FOR THE BLUE ARM
;
; LINK MASS X Y Z I(XX) I(YY) I(ZZ)
; [OZ-MSEC↑2/IN] [INCHES] [OZ-IN-MSEC↑2]
;
; 1 513610.0 0 0 -1.69 5.494@6
; 2 259780.0 0 -4.28 -1.67 9.6329@6 2.0459@6 7.7522@6
; 3 258787.0 0 0 -18.5 7.9694@7 7.9694@7 39167.0
; 4 101390.0 0 0 1.323 633330.0 174440.0 505560.0
; 5 41460.0 0 0 2.82 440346.0 414080.0 38837.0
; 6 33686.0 0 0 -3.09 422775.0 395629.0 39335.0
;
;INPUT SHAFT INERTIAS IN [OZ-IN-MILLISECONDS**2]:
;
; LINK INERTIA
;
; 1 1.5000@8
; 2 4.0000@8
; 3 100000.0 (MODIFICATION OF ORIGINAL BEJCZY EQUATIONS)
; 4 1.0212@7
; 5 1.0212@7
; 6 848093.0
; 7 1.5900@6
;
;THE FORCE OF GRAVITY IS TAKEN TO BE:
;
; G = 3.8592*10@-4 OZ-MILLISECONDS**2/INCHES
;
;GEOMETRICAL PARAMETERS:
;
; R2=6.05
; R6=9.38 (YELLOW), R6=10.281 (BLUE)
;PARAMETERS IN SIMPLIFIED STATE EQUATIONS FOR INERTIA AND GRAVITY LOADS.
;ALL VALUES ARE FOR THE CASE OF NO LOAD BEING HELD IN THE HAND.
BB1 ←← 1.7494E8 ;B1 = INPUT INERTIA 1 + I(1YY) + 2M(2)Y(2)R(2)
; + (M(2)+M(3)+M(4)+M(5))R(2)**2
; + .5( I(2XX) + I(2ZZ) )
BB2 ←← 7.969E7 ;B2 = I(3YY)
BB3 ←←-9.575E6 ;B3 = 2( M(3)Z(3) - M(4)Y(4) )
↓BB4 ←← 5.353E5 ;B4 = INPUT INERTIA 3 + M(3) + M(4) + M(5) + M(6)
BB5 ←← 7.183E5 ;B5 = 2M(5)Z(5) + 2M(6)*( Z(6) + R(6) )
BB13 ←← 4.817E8 ;B13 = INPUT INERTIA 2 + I(2YY) + I(3XX)
BB14 ←← 1.039E7 ;B14 = INPUT INERTIA 4 + I(4YY)
BB15 ←← 2.283E6 ;B15 = I(5XX) + I(6XX) + M(6)R(6)*( R(6) + 2Z(6) )
↓BB1718←← 1.247E7 ;B17 + B18 = INPUT INERTIA 5 + I(5YY) + I(6XX)
↓BB1920←← 8.874E5 ;B19 + B20 = INPUT INERTIA 6 + I(6ZZ)
GDD1 ←← -2.3447E3 ;G*D1=G*( M(2)Z(2) + M(3)Z(3) - M(4)Y(4))
;DD1 ←←-5.221E6 ;D1 = M(2)Z(2) + M(3)Z(3) - M(4)Y(4)
; + M(6)R(6)* ( 2Z(6) + R(6) )
GG ←← 3.859E-4 ;G = ACCELERATION DUE TO GRAVITY
NGG ←←-3.859E-4 ;-G
GDD2 ←← 1.8873E2 ;G*D2= G*( BB4 - INPUT INERTIA 3 )
;GDD2 ←← 1.680E2 ;G*D2= G*( BB4 - INPUT INERTIA 3 )
MGDD3 ←←-1.386E2 ;-G*D3=-G*( .5BB5 )
↓R6Z6 ←← 1.438E1 ;2*( R(6) + Z(6) )
↓R62Z6 ←← 4.216E1 ;R(6)*( R(6) + 2Z(6) )
BHDI ←← 0.000E0 ;BLUE HAND GRAVITY LOADING
BHDII ←← 1.590E6 ;BLUE HAND INERTIA
;STORAGE AREA FOR BEJCZY COEFFICIENTS
↓B1: BB1 ;UNCHANGED BY LOAD IN HAND
↓B2: BB2 ; " " " " "
↓B3: BB3 ; " " " " "
↓B13: BB13 ; " " " " "
↓B14: BB14 ; " " " " "
↓GD1: GDD1 ; " " " " "
↓G: GG ; " " " " "
↓NEGG: NGG ; " " " " "
↓B5: BB5 ;DEPENDS UPON LOAD IN HAND
↓B15: BB15 ; " " " " "
↓GD2: GDD2 ; " " " " "
↓MGD3: MGDD3 ; " " " " "
↓B4: BB4 ; " " " " "
;B1718 STORED IN DTERMS " " " " "
;B1920 " " " " " " " "
;LIST OF VALUES FOR LOAD DEPENDENT COEFFICENTS WITH NO LOAD IN HAND.
↓NO4: BB4
↓NO5: BB5
↓NO15: BB15
↓NO1718:BB1718
↓NO1920:BB1920
↓HOLD: BLOCK 17
;ARM HAND DYNAMIC COEFFICIENTS
↓BHDATA:BHDI
BHDII
↓YHDATA:BHDI
BHDII
;HNDWT & NOWT: MODIFY BEJCZY PARAMETERS FOR A GIVEN LOAD IN THE HAND.
;HNDWT IS USED TO ESTABLISH A LOAD BEING HELD IN THE HAND AND NOWT
;RESETS THE COEFFICIENTS FOR NO LOAD. SAMPLE SAIL CALLS TO THESE
;ROUTINES ARE AS FOLLOWS:
;
; NOWT(DUMMY ARGUMENT)
; OR
; HNDWT(ARRAY)
;
;WHERE ARRAY(1) CONTAINS THE WEIGHT OF THE LOAD IN OZ., ARRAY(2) THE
;R(XX) VALUE, ARRAY(3) THE R(YY) VALUE, AND ARRAY(4) THE R(ZZ) VALUE.
;ALL LENGTHS ARE IN INCHES. IT IS ASSUMED THAT THE CENTER OF MASS OF
;THE LOAD IS LOCATED AT THE ORIGIN OF THE HAND AXIS SYSTEM.
BEGIN HNDWT
MASS←←10 ;VALUE OF MASS
IX←←11 ;VALUE OF I(XX)
IZ←←12 ;VALUE OF I(ZZ)
AC←←13
↑NOWT: MOVEM 16,HOLD+16 ;SAVE ALL THE REGISTERS
HRRZI 16,HOLD
BLT 16,HOLD+15
SETZB MASS,IX ;INDICATE NO WEIGHT IN HAND
SETZ IZ
JRST SAME
↑HNDWT: MOVEM 16,HOLD+16 ;SAVE ALL THE REGISTERS
HRRZI 16,HOLD
BLT 16,HOLD+15
MOVE AC,-1(P) ;GET THE ADDR. OF THE VALUES
MOVE MASS,(AC) ;GET THE VALUE OF MASS IN OZ
FDVR MASS,G
MOVE IX,1(AC) ;GET THE VALUE OF R(XX)
FMPR IX,1(AC) ;COMPUTE I(XX)
FMPR IX,MASS
MOVE IZ,3(AC) ;GET THE VALUE OF R(ZZ)
FMPR IZ,3(AC) ;COMPUTE I(ZZ)
FMPR IZ,MASS
; COMMON CODE FOR NOWT AND HNDWT
SAME: MOVE AC,NO4 ;LOAD B4
FADR AC,MASS ;ADD THE MASS OF THE LOAD
MOVEM AC,B4 ;SAVE THE VALUE
PUSH P,AC ;COMPUTE THE SQUARE ROOT
PUSHJ P,SQRT
MOVEM 1,D33 ;STORE NEW VALUE IN DTERMS WHERE D33= SQRT B4
FMPR AC,G ;MULT. BY ACCEL. OF GRAVITY
MOVEM AC,GD2 ;STORE IN COEF. ARRAY
MOVE AC,[R6Z6] ;LOAD 2*( R(6) + Z(6) )
FMPR AC,MASS ;MULT. BY THE MASS
FADR AC,NO5 ;ADD NO LOAD VALUE OF B5
MOVEM AC,B5 ;STORE IN COEF. ARRAY
FMPR AC,[0.5] ;CALCULATE D3=.5*B5
FMPR AC,NEGG ;CALCULATE -G*D3
MOVEM AC,MGD3 ;STORE IN COEF. ARRAY
FMPR MASS,[R62Z6] ;MULT. MASS BY R(6)*( R(6) + 2Z(6) )
FADRB MASS,IX ;ADD THE I(XX) OF THE LOAD
FADR MASS,NO15 ;ADD THE NO LOAD VALUE OF B15
MOVEM MASS,B15 ;STORE IN COEF. ARRAY
FADR IX,NO1718 ;ADD TO IX NO LOAD B17+B18
PUSH P,IX ;COMPUTE THE SQUARE ROOT
PUSHJ P,SQRT
MOVEM 1,D55 ;STORE NEW VALUE IN DTERMS WHERE D55=B1718
FADR IZ,NO1920 ;ADD MASS I(ZZ) TO NO LOAD B19+B20
PUSH P,IZ ;COMPUTE THE SQUARE ROOT
PUSHJ P,SQRT
MOVEM 1,D66 ;STORE NEW VALUE IN DTERMS WHERE D66=B1920
HRLZI 16,HOLD ;RESTORE THE REGISTERS
BLT 16,16
SUB P,[2(2)] ;INDICATE VALUES OFF STACK
JRST @2(P) ;RETURN
BEND
;DTERMS: COMPUTES THE D(II) AND D(I) COEFFICIENTS OF THE STATE EQUATIONS.
;A SAMPLE SAIL PROCEDURE CALL TO THIS ROUTINE IS AS FOLLOWS:
;
; DTERMS(REAL ARRAY DD,TH;INTEGER MECHANISM);
;
;WHERE DD IS AN ARRAY IN WHICH THE SIX VALUES OF D(I) AND THE SIX VALUES
;OF D(II) ARE TO BE RETURNED. TH IS AN ARRAY WHICH CONTAINS THE JOINT
;VARIABLES FOR JOINTS 1 TO 6, AND MECHANISM IS A WORD WHICH INDICATES WHICH
;MECHANISM IS TO BE CONSIDERED. IT IS ASSUMED THAT THE TH VALUES ARE IN
;UNITS OF DEGREES OR INCHES.
BEGIN DTERMS
;REGISTER DEFINITIONS AND TEMPORARY STORAGE
SN←←1 ;SINE RESULTS OF SNCOSR RETURNED IN REG 1
CS←←2 ;COSINE " " " " " " 2
AC←←11
BC←←12
SN2←←13 ;SIN THETA 2
CS2←←14 ;COS THETA 2
SN5←←15 ;SIN THETA 5
CS5←←16 ;COS THETA 5
TH1: 0 ;STORAGE AREA FOR JOINT VARIABLES
TH2: 0
S3: 0
TH4: 0
TH5: 0
CD1: 0 ;GRAVITY LOADING TERM
D11: 0 ;DIAGONAL TERMS OF ACCELERATION MATRIX
CD2: 0
D22: 0
CD3: 0
↑D33: BB4 ;HAND LOAD DEPENDENT CONSTANT
CD4: 0
D44: 0
CD5: 0
↑D55: BB1718 ; " " " "
CD6: 0
↑D66: BB1920 ; " " " "
; "DTERMS" EXECUTABLE CODE
↑DTERMS:MOVEM 16,HOLD+16 ;SAVE THE REGISTERS
HRRZI 16,HOLD
BLT 16,HOLD+15
MOVE BC,-1(P) ;GET MECHANISM WORD
TRNE BC,YELHND+BLUHND;CHECK IF JUST NEED VALUES FOR ARM HAND
JRST HANDS ;BRANCH IF JUST HAND DATA REQUESTED
HRL AC,-2(P) ;GET ADDR. OF TH ARRAY
HRRI AC,TH1 ;STORE STARTING AT TH1
BLT AC,TH5 ;GET THE FIRST 5 JOINT VARIABLES
;D33, D55, AND D66 ARE CONSTANTS DEPENDENT ONLY UPON HAND LOAD
;COMPUTE D44
PUSH P,TH5 ;CALCULATE SIN AND COS TH5
PUSHJ P,SNCOSD
MOVEM SN,SN5 ;SAVE THE VALUE
FMPR SN,SN5 ; (SIN TH5)**2
FMPR SN,B15 ; X B15
FADR SN,B14 ; + B14
MOVEM SN,D44 ;SAVE D44
;COMPUTE D22
MOVEM CS,CS5 ;ALREADY HAVE COS 5 IN REG 2, SAVE IT
FMPR CS,B5 ; X B5
FADR CS,B3 ; + B3
MOVE AC,S3 ;LOAD S3
FMPR AC,B4 ; X B4
FADR CS,AC ; + ( B3 + B5*CS5 )
FMPR CS,S3 ; X S3
MOVEM CS,BC ;SAVE RESULT IN BC TEMPORARILY
FADR CS,B13 ; + B13
MOVEM CS,D22 ;SAVE D22
;COMPUTE D11
PUSH P,TH2 ;GET VALUE OF SIN AND COS TH2
PUSHJ P,SNCOSD
MOVEM SN,SN2 ;SAVE THE VALUE
FMPR SN,SN2 ; (SIN TH2)**2
FADR BC,B2 ;ADD B2 TO ( B3 + B5*CS5 )*S3 + B4*S3**2
FMPR BC,SN ; X (SIN TH2)**2
FADR BC,B1 ; + B1
MOVEM BC,D11 ;SAVE D11
; [CONTINUATION OF DTERMS]
;COMPUTE CD3
MOVEM CS,CS2 ;SAVE THE VALUE OF COS TH2
FMPR CS,GD2 ; X (G * D2)
MOVEM CS,CD3 ;SAVE CD3
;COMPUTE CD5
PUSH P,TH4 ;GET VALUE OF SIN AND COS TH4
PUSHJ P,SNCOSD
MOVE AC,SN2 ;LOAD THE SIN TH2
FMPRB AC,CS5 ; X COS TH5, SAVE IN BOTH LOCATIONS
FMPR AC,SN ; X SIN TH4
FMPR CS2,SN5 ;MULT. COS TH2 BY SIN TH5
FADR AC,CS2 ;NOW HAVE SIN TH2*COS TH5*SIN TH4
; + COS TH2*SIN TH5
FMPR AC,MGD3 ; X (-G * D3)
MOVEM AC,CD5 ;SAVE CD5
;COMPUTE CD2
FMPR SN,CS2 ;NOW HAVE SIN TH4*COS TH2*SIN TH5
FADR SN,CS5 ; + SIN TH2*COS TH5
FMPR SN,MGD3 ; X (-G * D3)
MOVE AC,S3 ;G*D2*S3
FMPR AC,GD2
FADR AC,GD1 ; + G*D1
FMPR AC,SN2 ; X SIN TH2
FSBR SN,AC ; - G*D3*(SIN TH2*COS TH5
; +SIN TH4*COS TH2*SIN TH5)
MOVEM SN,CD2 ;SAVE CD2
;COMPUTE CD4
FMPR CS,SN5 ; COMPUTE COS TH4 X SIN TH5
FMPR CS,SN2 ; X SIN TH2
FMPR CS,MGD3 ; X (-G * D3)
MOVEM CS,CD4 ;SAVE CD4
;SEND BACK THE DII AND DI TERMS
MOVE AC,-3(P) ;GET THE ADDRESS OF THE DD ARRAY
MOVE BC,AC ;SAVE IT AGAIN
HRLI AC,CD1 ;START TRANSFER FROM FIRST GRAVITY TERM
BLT AC,13(BC) ;TRANSFER 12 TERMS FOR THE D[I] AND D[II]
JRST DTDNE ;EXIT
; [CONTINUATION OF DTERMS]
;SEND BACK DII AND DI FOR THE ARM HAND
HANDS: MOVE AC,-3(P) ;GET ADDR TO RETURN DATA TOO
HRLI AC,BHDATA ;ASSUME BLUE HAND DATA REQUESTED
TRNE BC,YELHND ;CHECK IF YELLOW HAND DATA REQ. INSTEAD
HRLI AC,YHDATA ;REPLACE IF SO
HRRZ BC,AC ;SAVE RETURN ADDR AGAIN
BLT AC,1(BC) ;TRANSFER 2 TERMS FOR THE D[I] AND D[II]
;RESTORE REGISTERS AND EXIT
DTDNE: HRLZI 16,HOLD ;RESTORE REGISTERS
BLT 16,16
SUB P,[4(4)] ;INDICATE ADDR. POPPED OFF STACK
JRST @4(P) ;RETURN
BEND
END